﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SGQ.Model;
using SGQ.Controller;

namespace SGQ.View
{
    public partial class FormManterDepartamento : Form
    {

        public FormManterDepartamento()
        {
            
            InitializeComponent();
            limpaLabels();
            dpto = new Departamento();
            controlDpto = new ControllerDepartamento();
            refresh();
        }

        private Departamento dpto;
        private ControllerDepartamento controlDpto;
        public SessionApplication Session {get; set;}

        private void limpaLabels() {
            tbDepartment.Text = null;
            tbCodDep.Text = null; 
        }
        private void preencheLabels() {
            tbDepartment.Text = dpto.Descricao;
            tbCodDep.Text = dpto.Codigo.ToString(); 
        }
        private void pegaValores() {
            dpto.Descricao = tbDepartment.Text;
            if (tbCodDep.Text != null && tbCodDep.Text.Length != 0)
            {
                dpto.Codigo = int.Parse(tbCodDep.Text);
            }
        }
        public void refresh(object sender, EventArgs e)
        {
            this.FormManterDepartamento_Load(sender, e);
            preencheDataGrid();
        }
        public void refresh()
        {
            preencheDataGrid();
        }

        private void inserirDepartamento() {
            try
            {
                pegaValores();
                if (controlDpto.Insert(dpto) == true)
                {
                    MessageCliente.MessageClient("Registro Inserido Com Sucesso");
                }
                else {
                    MessageCliente.MessageClient("Registro Não Foi Inserido");
                }
                
                limpaLabels();
                refresh();
            }
            catch (Exception e) {
                MessageCliente.MessageClient(e.Message);
            }
        }

        private void atualizarDepartamento()
        {
            try
            {
                pegaValores();
                if (controlDpto.Update(dpto) == true)
                {
                    MessageCliente.MessageClient("Registro Atualizado Com Sucesso");
                }
                else
                {
                    MessageCliente.MessageClient("Registro Não Foi Atualizado");
                }

                limpaLabels();
                refresh();
            }
            catch (Exception e)
            {
                MessageCliente.MessageClient(e.Message);
            }
        }

        private void removerDepartamento()
        {
            try
            {
                pegaValores();
                if (controlDpto.Delete(dpto) == true)
                {
                    MessageCliente.MessageClient("Registro Removido Com Sucesso");
                }
                else
                {
                    MessageCliente.MessageClient("Registro Não Foi Removido");
                }

                limpaLabels();
                refresh();
            }
            catch (Exception e)
            {
                MessageCliente.MessageClient(e.Message);
            }
        }

        private void escolherDepartamento(DataGridViewCellEventArgs e)
        {
            DataGridViewCell dgCell = dgUser.Rows[e.RowIndex].Cells[0];
            dpto.Codigo = int.Parse(dgCell.Value.ToString());
            dgCell = dgUser.Rows[e.RowIndex].Cells[1];
            dpto.Descricao = dgCell.Value.ToString();
            preencheLabels();
        }

        private void preencheDataGrid()
        {
            dgUser.DataSource = controlDpto.ListDataSet().Tables[0];
        }

        private void pesquisaDepartamento()
        {
            pegaValores();
            dgUser.DataSource = controlDpto.ListDataSet(dpto).Tables[0];
            limpaLabels();
        }

        private void FormManterDepartamento_Load(object sender, EventArgs e)
        {
            preencheDataGrid();
        }

        private void btAddDepartment_Click(object sender, EventArgs e)
        {
            inserirDepartamento();
        }

        private void btUpdateDepartment_Click(object sender, EventArgs e)
        {
            atualizarDepartamento();
        }

        private void btOK_Click(object sender, EventArgs e)
        {

        }

        private void btRemoveDepartment_Click(object sender, EventArgs e)
        {
            removerDepartamento();
        }

        private void dgUser_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            escolherDepartamento(e);
        }

        private void btLimpar_Click(object sender, EventArgs e)
        {
            limpaLabels();
        }

        private void btPesquisa_Click(object sender, EventArgs e)
        {
            pesquisaDepartamento();
        }

        private void btListar_Click(object sender, EventArgs e)
        {
            refresh();
        }
    }
}
